The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device. In the printing context, a printer driver allows applications (e.g., Microsoft Word, Adobe Acrobat, SmartDraw, etc.) to print to a printing device without the applications being required to know the technical details of the printing device. A printer driver converts electronic data, from an application, to a form specific to a particular printing device.
Current printer drivers are device-oriented and, consequently, suffer significant drawbacks when multiple devices persist. For example, manufacturers must create a printer driver for each device model it produces. Each printer driver contains pre-defined device features. Most printer drivers do not support dynamic feature support. Currently, universal printer drivers provide some very limited dynamic feature support by defining a limited set of features and then turning some features on or off through SNMP device querying.
Further, a user must manually install one printer driver for each connected device into the local operating system of the user's device. The user must first know the exact device model and then download a compatible printer driver from the manufacture for that model. When multiple printing devices exist across a network, multiple drivers must be installed in order to be able to use those printing devices. If a user moves her computing device (e.g., laptop) so that the computing devices is in a different network and the user desires to be able to print to printing devices in that different network, then the user must add more printer drivers to her computing device. As a result of installing numerous printer drivers, the user must retrieve all necessary printer information from every installed printer driver. Thus, creating a simple print job can quickly become a complicated job.
Additionally, under current printer driver architectures, each printer driver displays its own user interface (UI). If user selects a different printing device, then an operating system must open a new printer driver with a different UI for that printing device.
Some current printer drivers are considered “universal” drivers in that such drivers support multiple models. However, one universal driver can only support one device at any given time. When multiple printing devices are present on one network, multiple instances of universal drivers must be installed into the operating system of a client device.
As a consequence of current printer driver architectures, if a user desires to use a printer feature (such as hole punching) and the user does not know which printing device supports that printer feature, then the user must open each printer driver's UI in order to determine which printing device is capable of that printer feature.